package common_config

import (
	"fmt"
	"gopkg.in/yaml.v3"
	"os"
)

// BootConfig 项目启动引导配置
var BootConfig = &BoostrapConfig{HttpPort: "8080"}

// GetAppName 获取当前运行服务进程的服务名称
func GetAppName() string {
	return BootConfig.Nacos.AppName
}

// GetNacosCfg 获取nacos配置
func GetNacosCfg() Nacos {
	return BootConfig.Nacos
}

// GetLogCfg 获取日志配置
func GetLogCfg() Logger {
	return BootConfig.Logger
}

// GetConfigSecretKey 获取配置加密密钥(不同环境有不同的密钥，用以解密nacos配置文件中使用ENC()的加密字符串)
func GetConfigSecretKey() string {
	return BootConfig.ConfigSecretKey
}

// 初始化配置文件
func init() {
	//从main.go同级目录中读取bootstrap.yml配置文件
	dataBytes, err := os.ReadFile("bootstrap.yml")
	if err != nil {
		fmt.Println("读取文件失败：", err)
		panic(err)
	}
	err = yaml.Unmarshal(dataBytes, BootConfig)
	if err != nil {
		fmt.Println("解析 yaml 文件失败：", err)
		panic(err)
	}
	//设置一些默认值
	if BootConfig.Nacos.Namespace == "" {
		BootConfig.Nacos.Namespace = os.Getenv("NACOS_NAMESPACE")
	}
	if BootConfig.Nacos.Cluster == "" {
		BootConfig.Nacos.Cluster = "DEFAULT"
	}
	if BootConfig.Nacos.AvailabilityCluster == "" {
		BootConfig.Nacos.AvailabilityCluster = "DEFAULT"
	}
}
